package com.rem.mp;

import com.rem.mp.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * 乐观锁
 * 在实体对象中配置版本字段
 * version支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
 * 整数类型下 newVersion = oldVersion + 1
 * newVersion 会回写到 entity 中
 * 仅支持 updateById(id) 与 update(entity, wrapper) 方法
 * 在 update(entity, wrapper) 方法下, wrapper 不能复用!!!
 *
 * @Author Rem
 * @Date 2020-03-01
 */

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyApplicationTest5 {


    /**
     * 乐观锁测试
     */
    @Test
    public void testVersion() {
        User user = new User(20L);

        User oldUser = user.selectById();

        //直接设置版本信息
        user.setVersion(oldUser.getVersion());

        //修改内容
        user.setAge(30);

        // UPDATE tb_user SET age = 29, version = 2 WHERE id = 15 AND version = 1
        boolean update = user.updateById();

        System.err.println(update);
    }


}